2300 PRINT "<CTRL-J>ENTER THE NUMBER OF THE FIELD YOU WANT": PRINT "TO CHANGE ";
2310 INPUT "";S$:S = VAL(S$)
2320 IF S <1 OR S >NH THEN 2300
2330 PRINT
2340 PRINT "FROM ";H$(S);": ";N$(Y,S)
2350 PRINT
2360 PRINT "TO "H$(S)": ";: INPUT "";N$(Y,S)
2370 HOME : GOSUB 2420
2380 PRINT
2390 INPUT "<CTRL-J>MORE CHANGES (Y/N) ";L$
2400 IF L$ = "Y" THEN 2250
2410 F$ = ".I": GOSUB 5060: GOTO 5580
2420 REM ***PRINT A RECORD***
2430 ON PF GOSUB 6060,6080
2440 PRINT " "H$(0)": ";J
2450 FOR I = 1 TO NH
2460 PRINT I" "H$(I)": "N$(Y,I)
2470 NEXT I
2480 PRINT
2490 L = L +NH +2
2500 PRINT D$"PR#0"
2510 RETURN
2520 REM ***DELETE RECORDS***
2530 HOME
2540 PRINT "ENTER 0 TO STOP DELETING"
2550 INPUT "ENTER RECORD NUMBER YOU WANT DELETED ";DR$:DR = VAL(DR$)
2560 IF DR = 0 THEN GOTO 2670
2570 IF DR <1 OR DR >NR THEN 2550
2580 FOR J = DR TO NR -1
2590 FOR I = 1 TO NH
2600 N$(J,I) = N$(J +1,I)
2610 NEXT I
2620 NEXT J
2630 NR = NR -1
2640 PRINT : PRINT "RECORD NUMBER "DR" DELETED!": PRINT
2650 INPUT "MORE (Y/N) ";L$
2660 IF L$ = "Y" THEN 2550
2670 F$ = ".I": GOSUB 5060: GOTO 5580
2680 REM *** BASENAMEFILE ROUTINES ***
2690 HOME
2700 PRINT "SELECT FROM:": PRINT
2710 FOR J = 1 TO NR: PRINT J" "R$(J): NEXT J: PRINT
2720 PRINT J" CREATE A NEW DATA BASE"
2730 IF J >1 THEN PRINT J +1" DELETE A DATA BASE"
2740 PRINT
2750 INPUT "WHICH ";S$:S = VAL(S$)
2760 IF S = J +1 THEN 2920
2770 IF S <1 OR S >J THEN PRINT CHR$(7);: VTAB PEEK(37): CALL -868: GOTO 2750
2780 DB$ = R$(S)
2790 IF S < >J THEN 1200
2800 PRINT
2810 GOTO 2830
2820 PRINT D$"CLOSE": CALL 1013
2830 IF J = 0 THEN J = 1
2840 PRINT "NAME FOR NEW DATA BASE FILE": INPUT "SIX CHARACTERS MAXIMUM: ";R$(J)
2850 IF LEN(R$(J)) >6 OR LEFT$(R$(J),1) <"A" OR LEFT$(R$(J),1) >"Z" THEN 2840
2860 I = 1
2870 IF ( MID$ (R$(J),I,1) = ".") OR ( MID$ (R$(J),I,1) >"/" AND MID$ (R$(J),I,1) <":") OR ( MID$ (R$(J),I,1) >"@" AND MID$ (R$(J),I,1) < CHR$(91)) THEN 2890
2880 GOTO 2840
2890 I = I +1: IF I < = LEN(R$(J)) THEN 2870
2900 NR = J: GOSUB 5060
2910 DB$ = R$(J -1): GOTO 1200
2920 REM *** DELETE A DATA BASE ***
2930 PRINT : INPUT "DELETE WHICH : ";S$:S = VAL(S$)
2940 IF S <1 OR S >J -1 THEN PRINT CHR$(7);: VTAB PEEK(37) -1: CALL -868: GOTO 2930
2950 HOME : VTAB (9): PRINT "READY TO DELETE " CHR$(34);R$(S); CHR$(34);".": PRINT
2960 PRINT "ONCE DELETED, THIS DATA CANNOT BE"
2970 PRINT "RECOVERED. ARE YOU SURE THAT YOU"
2980 PRINT "WANT TO DELETE IT? (Y/N) ";: INPUT "";S$
2990 IF S$ < >"Y" THEN 2680
3000 HOME : VTAB 12: HTAB 11: INVERSE : PRINT CHR$(91);" DELETING DATABASE ]": NORMAL
4250 IF GT < >0 THEN POKE 36,K(3 *I -1) +5 - LEN( STR$(GT)): PRINT GT;
4260 PRINT : RETURN
4270 HOME
4280 IF Q$ = "@" THEN PRINT RN$(NN);" REPORT (ALL RECORDS)";: GOTO 4320
4290 PRINT RN$(NN)" REPORT FOR "H$(S)"="Q$;
4300 IF X$ = "@" THEN 4320
4310 PRINT " AND ";H$(X);"=";X$
4320 PAGE = PAGE +1:SPACE = WIDE - LEN(RN$(NN)) - LEN(H$(S)) -18: IF SPACE <1 THEN PRINT : REM TESTS IF PAGE # & TITLE OVER-PRINT
4330 IF WIDE <7 THEN WIDE = 7
4340 POKE 36,WIDE -6: PRINT "PAGE ";PAGE
4350 IF SPACE >0 THEN PRINT
4360 GOSUB 4190
4370 FOR I = 1 TO RH
4380 POKE 36,K(3 *I -1): PRINT H$(K(3 *I -2));
4390 NEXT I
4400 IF K(0) = 1 THEN POKE 36,K(3 *I -1): PRINT "TOTAL";
4410 PRINT : GOSUB 4190
4420 L = 5: RETURN
4430 REM *** SET-UP TO SAVE RPTFMTFILE ***
4440 NS = NR
4450 PRINT : PRINT "ENTER THE REPORT FORMAT NAME": INPUT "SIX CHARACTERS MAXIMUM: ";RN$(NN)
4460 IF LEN(RN$(NN)) >6 THEN 4450
4470 I = 1
4480 IF ( MID$ (RN$(NN),I,1) = ".") OR ( MID$ (RN$(NN),I,1) >"/" AND MID$ (RN$(NN),I,1) <":") OR ( MID$ (RN$(NN),I,1) >"@" AND MID$ (RN$(NN),I,1) < CHR$(91)) THEN 4500
4490 GOTO 4450
4500 I = I +1: IF I < = LEN(RN$(NN)) THEN 4480
4510 F$ = RN$(NN) +".R"
4520 NR = 3 *RH +2
4530 FOR I = 1 TO NR:R$(I) = STR$(K(I)): NEXT I
4540 R$(I -2) = STR$(K(0))
4550 GOSUB 5060: GOSUB 5260
4560 RETURN
4570 REM *** SET-UP TO READ RPTFMTFILE ***
4580 F$ = RN$(NN) +".R"
4590 GOSUB 4890
4600 RH = (NR -2)/3: FOR I = 1 TO NR:K(I) = VAL(R$(I)): NEXT I
4610 K(0) = VAL(R$(I -2))
4620 NR = NS
4630 GOSUB 4640: PRINT : GOTO 3630
4640 REM *** SUB MENU ***
4650 HOME : PRINT "SELECT FROM:": PRINT
4660 IF MF = 0 THEN PRINT "0 "H$(0)
4670 FOR I = 1 TO NH: PRINT I" "H$(I): NEXT I: PRINT
4680 MF = 0
4690 RETURN
4700 REM *** READ REPORTNAMEFILE & SELECT REPORT ***
4710 NN = 0: FOR I = 0 TO 21:RN$(I) = "": NEXT I:NS = NR
4720 F$ = ".F"
4730 ONERR GOTO 4840
4740 GOSUB 4890
4750 POKE 216,0
4760 FOR I = 1 TO NR:RN$(I) = R$(I): NEXT I
4770 HOME : PRINT "SELECT FROM:": PRINT
4780 FOR I = 1 TO NR: PRINT I" "R$(I): NEXT I: PRINT
4790 PRINT I" CREATE A NEW REPORT FORMAT": PRINT
4800 INPUT "WHICH ";S$:S = VAL(S$): IF S <1 OR S >I THEN 4800
4810 NN = S
4820 IF S < >I THEN RN$(S) = R$(S):E = 1:NR = NS: GOTO 4570
4830 GOTO 4880
4840 PRINT D$"CLOSE": CALL 1013: HOME : PRINT "NO REPORT FORMATS ON DISK...": PRINT
4850 POKE 216,0
4860 NN = 1
4870 INPUT "DO YOU WANT TO CREATE ONE (Y/N) ?";L$: IF L$ < >"Y" THEN 5580
4880 GOSUB 4640:NR = NS: GOTO 3340
4890 REM *** READ FILES ***
4900 IF F$ < >".I" THEN FF = 1
4910 PRINT D$;"OPEN";DB$;F$;"F"
4920 PRINT D$;"READ";DB$;F$;"F"
4930 INPUT NR
4940 FOR J = 1 TO NR
4950 ON FF GOTO 5010
4960 FOR I = 1 TO NH
4970 INPUT N$(J,I)
4980 NEXT I
4990 R(J) = J
5000 GOTO 5020
5010 INPUT R$(J)
5020 NEXT J
5030 PRINT D$"CLOSE"
5040 FF = 0
5050 RETURN
5060 REM *** SAVE FILES ***
5070 IF F$ < >".I" THEN FF = 1
5080 PRINT "WRITING..."
5090 PRINT D$"OPEN";DB$;F$;"F": PRINT D$"CLOSE"
5100 PRINT D$;"DELETE";DB$;F$;"F"
5110 PRINT D$"OPEN"DB$;F$"F"
5120 PRINT D$"WRITE"DB$;F$"F"
5130 PRINT NR
5140 FOR J = 1 TO NR
5150 ON FF GOTO 5210
5160 Y = R(J)
5170 FOR I = 1 TO NH
5180 PRINT N$(Y,I)
5190 NEXT I
5200 GOTO 5220
5210 PRINT R$(J)
5220 NEXT J
5230 PRINT D$"CLOSE"
5240 FF = 0
5250 RETURN
5260 REM *** SAVE REPORTNAMEFILE ***
5270 NR = NN
5280 F$ = ".F"
5290 FOR I = 1 TO NR:R$(I) = RN$(I): NEXT I
5300 GOSUB 5060
5310 NR = NS: RETURN
5320 REM *** LIST ***
5330 L = 0
5340 HOME
5350 FOR J = 1 TO NR:Y = R(J)
5360 ON PF GOSUB 6060,6080,6110
5370 PRINT " "H$(0)": ";J:L = L +1
5380 FOR I = 1 TO NH
5390 PRINT I" "H$(I)": "N$(Y,I)
5400 L = L +1
5410 NEXT I
5420 PRINT :L = L +1
5430 IF L +NH >20 THEN 5480
5440 NEXT J
5450 PRINT D$"PR#0"
5460 INPUT "HIT RETURN FOR MENU...";L$
5470 GOTO 5580
5480 PRINT D$"PR#0"
5490 PRINT "PRESS RETURN TO CONTINUE, ESC FOR MENU";
5500 GET L$
5510 IF ASC(L$) = 27 THEN 5580
5520 IF ASC(L$) = 13 THEN 5540
5530 GOTO 5500
5540 HOME :L = 0
5550 ON PF GOSUB 6060,6080,6110
5560 GOTO 5440
5570 STOP
5580 REM *** MAIN MENU ***
5590 GOTO 5610
5600 PRINT D$"CLOSE": CALL 1013
5610 HOME
5620 PRINT "******* PRODOS FILE CABINET *******"
5630 PRINT : PRINT "DATE: ";
5640 IF DD = 0 THEN PRINT "<NO DATE>": GOTO 5690
5650 IF DD <10 THEN PRINT "0";
5660 PRINT DD;"-";MM$;"-";
5670 IF YY <10 THEN PRINT "0";
5680 PRINT YY
5690 PRINT
5700 PRINT "CURRENT DATA BASE: "DB$: PRINT
5710 PRINT "CURRENTLY CONTAINS: "NR" RECORDS": PRINT : PRINT "YOU HAVE ";: GOSUB 8000: PRINT FM;" BYTES OF MEMORY LEFT"
5730 PRINT
5740 IF PF > = 1 THEN PRINT "THE PRINTER IS ";: FLASH : PRINT "ON": NORMAL : GOTO 5760
65535 REM "<CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H><CTRL-H>* <CTRL-M>* APPLE COMPUTER'S<CTRL-M>* FILE.CABINET<CTRL-M>*<CTRL-M>* 1ST UPDATE BY:<CTRL-M>* JAC M PILTZ 1980<CTRL-M>*<CTRL-M>* 2ND UPDATE AND<CTRL-M>* CONVERSION TO<CTRL-M>* PRODOS BY:<CTRL-M>* JAMES M LUTHER 4/84<CTRL-M>*